
import java.util.ArrayList;
import java.util.List;

public class Solution1 {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> triangle = new ArrayList<>();

        // 特殊情况处理，如果numRows为0，则直接返回空的列表
        if (numRows == 0) {
            return triangle;
        }

        // 初始化第一行
        List<Integer> firstRow = new ArrayList<>();
        firstRow.add(1);
        triangle.add(firstRow);

        // 从第二行开始生成杨辉三角
        for (int i = 1; i < numRows; i++) {
            List<Integer> prevRow = triangle.get(i - 1);
            List<Integer> row = new ArrayList<>();

            // 每一行的第一个数字总是1
            row.add(1);

            // 中间的数字是上一行的相邻两个数字之和
            for (int j = 1; j < i; j++) {
                row.add(prevRow.get(j - 1) + prevRow.get(j));
            }

            // 每一行的最后一个数字总是1
            row.add(1);

            // 将当前行添加到三角形列表中
            triangle.add(row);
        }

        return triangle;
    }

    public static void main(String[] args) {
        Solution1 solution1 = new Solution1();
        int numRows = 5;
        List<List<Integer>> result = solution1.generate(numRows);

        // 输出杨辉三角
        for (List<Integer> row : result) {
            System.out.println(row);
        }
    }
}
